package design_pattern.WaitingRequestQueue;

import java.util.LinkedList;

/**
 * @Author: 蔡翔
 * @Date: 2019/11/8 13:55
 * @Version 1.0
 *
 * 超重要
 */
public class RequestQueue {
    //执行任务的队列
    private final LinkedList<Request> queue = new LinkedList<>();

    public Request getRequest(){
        synchronized (queue){
            while (queue.size()<=0){
                try {
                    queue.wait();
                } catch (InterruptedException e) {
                    return null;
                }
            }
            return queue.removeFirst();
        }
    }

    public void putRequest(Request request){
        synchronized (queue){
            queue.addLast(request);
            //加入一条数据后 通知其他wait 的地方起来干活了。
            queue.notifyAll();
        }
    }
}
